package main

/*
反转字符串 II
给定一个字符串 s 和一个整数 k，从字符串开头算起，每计数至 2k 个字符，就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个，则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。


示例 1：
输入：s = "abcdefg", k = 2
输出："bacdfeg"

示例 2：
输入：s = "abcd", k = 2
输出："bacd"
*/

func reverseStr(s string, k int) string {
	ss := []byte(s)
	for i := 0; i < len(ss); i += 2 * k {
		if i+k <= len(ss) {
			reverse(ss[i : i+k])
		} else {
			reverse(ss[i:len(ss)])
		}
	}
	return string(ss)
}

func reverse(b []byte) {
	l, r := 0, len(b)-1
	for l < r {
		b[l], b[r] = b[r], b[l]
		l++
		r--
	}
}

func main() {

}
